home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / vsix60.exe / lha / VERNSIX.DOC < prev    next >
Text File  |  1990-10-28  |  75KB  |  2,911 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                               Vern Six's Clipper ToolBox
  24.  
  25.  
  26.                           *********************************
  27.                           *** SHAREWARE EVALUATION COPY ***
  28.                           *********************************
  29.  
  30.  
  31.  
  32.  
  33.  
  34.                                    October 28, 1990
  35.  
  36.                                      Release 4.30
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.                      Copyright (c) 1988-90 by Vernon E. Six, Jr.
  46.                             All Rights Reserved World Wide
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.           For the most  current version please send $5.00  to: VernSix.Lib,
  60.           c/o FrontLine Software, 2908 Forest Hollow Lane #2329, Arlington,
  61.           Texas  75080.
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.                                   Table of contents
  70.  
  71.           Item                                                         Page
  72.  
  73.           Licensing Terms and Conditions  . . . . . . . . . . . . . . .   4
  74.  
  75.           Disclaimer of Warranty  . . . . . . . . . . . . . . . . . . .   5
  76.  
  77.           Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   6
  78.  
  79.           Syntax Conventions  . . . . . . . . . . . . . . . . . . . . .   7
  80.  
  81.           How my programs are assigned version numbers  . . . . . . . .   8
  82.  
  83.           ASK() . . . . . . . . . . . . . . . . . . . . . . . . . . .    10
  84.  
  85.           ASK2()  . . . . . . . . . . . . . . . . . . . . . . . . . .    11
  86.  
  87.           CENTER()  . . . . . . . . . . . . . . . . . . . . . . . . .    12
  88.  
  89.           DISPMSG() . . . . . . . . . . . . . . . . . . . . . . . . .    13
  90.  
  91.           FAKELOCK  . . . . . . . . . . . . . . . . . . . . . . . . .    14
  92.  
  93.           FGBG2N()  . . . . . . . . . . . . . . . . . . . . . . . . .    15
  94.  
  95.           FSELECT() . . . . . . . . . . . . . . . . . . . . . . . . .    16
  96.  
  97.           GETCOLOR()  . . . . . . . . . . . . . . . . . . . . . . . .    17
  98.  
  99.           GETCOORD  . . . . . . . . . . . . . . . . . . . . . . . . .    18
  100.  
  101.           GRABSCRN()  . . . . . . . . . . . . . . . . . . . . . . . .    19
  102.  
  103.           HELP  . . . . . . . . . . . . . . . . . . . . . . . . . . .    20
  104.  
  105.           INITHELP()  . . . . . . . . . . . . . . . . . . . . . . . .    21
  106.  
  107.           INITVERN()  . . . . . . . . . . . . . . . . . . . . . . . .    22
  108.  
  109.           MAKEHLP . . . . . . . . . . . . . . . . . . . . . . . . . .    23
  110.  
  111.           N2FGBG()  . . . . . . . . . . . . . . . . . . . . . . . . .    24
  112.  
  113.           PUTSCRN() . . . . . . . . . . . . . . . . . . . . . . . . .    25
  114.  
  115.           REMKEY()  . . . . . . . . . . . . . . . . . . . . . . . . .    26
  116.  
  117.           SPECTRUM()  . . . . . . . . . . . . . . . . . . . . . . . .    27
  118.  
  119.           TEXTCOLR()  . . . . . . . . . . . . . . . . . . . . . . . .    28
  120.  
  121.           V_APPEND()  . . . . . . . . . . . . . . . . . . . . . . . .    29
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.           V_FLOCK() . . . . . . . . . . . . . . . . . . . . . . . . .    30
  130.  
  131.           V_RLOCK() . . . . . . . . . . . . . . . . . . . . . . . . .    31
  132.  
  133.           V_USE() . . . . . . . . . . . . . . . . . . . . . . . . . .    32
  134.  
  135.           VEDIT() . . . . . . . . . . . . . . . . . . . . . . . . . .    33
  136.  
  137.           VFILT() . . . . . . . . . . . . . . . . . . . . . . . . . .    35
  138.  
  139.           VINDEX()  . . . . . . . . . . . . . . . . . . . . . . . . .    36
  140.  
  141.           VMENU() . . . . . . . . . . . . . . . . . . . . . . . . . .    37
  142.  
  143.           VSCRL() . . . . . . . . . . . . . . . . . . . . . . . . . .    38
  144.  
  145.           VSELECT() . . . . . . . . . . . . . . . . . . . . . . . . .    39
  146.  
  147.           VWIND() . . . . . . . . . . . . . . . . . . . . . . . . . .    40
  148.  
  149.           WINDCOLR()  . . . . . . . . . . . . . . . . . . . . . . . .    41
  150.  
  151.           Global Variables  . . . . . . . . . . . . . . . . . . . . .    42
  152.  
  153.           Reporting bugs  . . . . . . . . . . . . . . . . . . . . . .    44
  154.  
  155.           I want your functions . . . . . . . . . . . . . . . . . . .    45
  156.  
  157.           REGISTRATION FORM . . . . . . . . . . . . . . . . . . . . .    46
  158.  
  159.           User Survey . . . . . . . . . . . . . . . . . . . . . . . .    48
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.                             Licensing Terms and Conditions
  168.  
  169.                      Copyright (c) 1988-90 by Vernon E. Six, Jr.
  170.                            All Rights Reserved World Wide.
  171.  
  172.           VERNSIX.LIB  may only be used and distributed under the following
  173.           conditions:
  174.  
  175.           1)   You may use VERNSIX.LIB for a period of up to thirty days to
  176.                determine its  suitability for your needs.   If you continue
  177.                to use  VERNSIX.LIB (or any program  with VERNSIX.LIB linked
  178.                into it) after  a period  of thirty days  you MUST  register
  179.                your copy.   A registration form  is included at  the end of
  180.                this documentation.
  181.  
  182.           2)   When  you  register  your  copy  of  VERNSIX.LIB,  you  will
  183.                receive:
  184.  
  185.                a)   the latest version without the "advertisemnet" screen
  186.  
  187.                b)   a royalty  free run-time license to  use VERNSIX.LIB in
  188.                     any of your applications. 
  189.  
  190.           3)   You  may  distribute VERNSIX.LIB  provided  that  no fee  is
  191.                charged,  except for  a nominal  "diskette" fee  or "connect
  192.                time"  charges.   In  any event,  the  entire fee  shall not
  193.                exceed $10.00.  This does  NOT apply to commercial  packages
  194.                developed using VERNSIX.LIB.  (see paragraphs 1 and 2)
  195.  
  196.           4)   You  may  NOT  use   VERNSIX.LIB  in  conjunction  with  any
  197.                commercial endeavor without 
  198.  
  199.                a)   registering your copy, and 
  200.  
  201.                b)   providing  a   "blurb"   line  about   the  author   of
  202.                     VERNSIX.LIB  i.e.  "This application  uses VERNSIX.LIB.
  203.                     Copyright (c) 1988-90  by Vernon E.  Six, Jr." in  your
  204.                     documentation.
  205.  
  206.           5)   You may NOT distribute VERNSIX.LIB in modified form.
  207.  
  208.           6)   If  you distribute VERNSIX.LIB,  it MUST be  in the original
  209.                "archive" as released  by the author.   You may not add  any
  210.                files,  archive comments,  nor may  you re-archive  it using
  211.                some other archive program, etc.  This is to ensure that  my
  212.                software hasn't been tampered with.
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.           4
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.                                 Disclaimer of Warranty
  229.  
  230.                                  *** NO WARRANTY ***
  231.  
  232.           Because  VERNSIX.LIB  is distributed  as  "SHAREWARE",  I provide
  233.           absolutely  no warranty,  to the  extent permitted  by applicable
  234.           state law.
  235.  
  236.           Except when  otherwise  stated in  writing, Vernon  E. Six,  Jr.,
  237.           FrontLine Software  and/or other parties provide  VERNSIX.LIB "AS
  238.           IS" without  warranty of any  kind, either expressed  or implied,
  239.           including,  but  not  limited   to,  the  implied  warranties  of
  240.           merchantability and fitness for  a particular purpose. The entire
  241.           risk as to  the quality  and performance of  VERNSIX.LIB is  with
  242.           you. Should VERNSIX.LIB  prove defective, you assume the  cost of
  243.           all necessary remedies, repair or correction.
  244.  
  245.           In  no event will Vernon E. Six, Jr. and/or FrontLine Software be
  246.           responsible in any way  for the behavior of modified  versions of
  247.           VERNSIX.LIB.   In no event,  unless required by  applicable state
  248.           law, will Vernon  E. Six,  Jr., FrontLine Software  or any  other
  249.           party  who  may distribute  VERNSIX.LIB  as  permitted above,  be
  250.           liable  to you  for  damages, including  any  lost profits,  lost
  251.           monies,  or other  special,  incidental  or consequental  damages
  252.           arising out of the  user or inability to  use (including but  not
  253.           limited to loss of data or data being render inaccurate or losses
  254.           sustained by third parties or a failure of the program to operate
  255.           with  any other  program)  VERNSIX.LIB,  even  if you  have  been
  256.           advised of the possibility  of such damages, or any  claim by any
  257.           other party.
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.                                                                           5
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.                                      Introduction
  290.  
  291.           Welcome!
  292.  
  293.           Thanks for taking the time  to try the Vern Six Clipper  ToolBox.
  294.           This  library contains the bulk  of the Clipper  functions that I
  295.           use on a regular basis.  I have developed and tested all of these
  296.           functions through many many hours of programming.
  297.  
  298.           Because I am a  very firm believer in the ShareWare  ("Try before
  299.           you  buy") system...  all  the functions contained  in my library
  300.           are fully-functional, fully-debugged and ready-to-use.   You will
  301.           not find any crippled  or partial functions.  Until  you register
  302.           your copy of VERNSIX.LIB, your applications will display  ONE ten
  303.           second "advertisement" when they  start up.  This "advertisement"
  304.           is not in the registered versions of VERNSIX.LIB.  You might say,
  305.           "This is the inducement to register."
  306.  
  307.           If  you   continue  to  use  VERNSIX.LIB  or   any  program  with
  308.           VERNSIX.LIB  linked into  it, for  more than  a period  of thirty
  309.           days,  you must  register  your copy  by  sending $39.95  to  the
  310.           address listed below.   For more  information on licensing  terms
  311.           and conditions please read the section of this  document entitled
  312.           "Licensing Terms and Conditions".
  313.  
  314.           In general,  to use  a Vernon  Six function,  you merely  use the
  315.           command to call the function in your source  code, then link your
  316.           application  with VernSix.Lib.   Only the  required code  will be
  317.           included  from the  library  file,  thus eliminating  unnecessary
  318.           overhead.
  319.  
  320.           I  highly suggest that you  look at the  enclosed VERNDEMO.PRG to
  321.           see how  to use the functions in this library.  VERNDEMO.PRG is a
  322.           rather  simple program that I think you  will find it helpful.  A
  323.           batch file called MAKEDEMO.BAT is included to ease your compiling
  324.           of VERNDEMO.PRG.
  325.  
  326.           *** IMPORTANT:  The Vernon  Six Library  is  written entirely  in
  327.           Clipper  using  the Summer  '87  version.   If  you are  using an
  328.           earlier version of Clipper, this library will NOT work properly.
  329.  
  330.           The author may be reached at the following address:
  331.  
  332.                Vernon E. Six, Jr.
  333.                c/o FrontLine Software
  334.                2908 Forest Hollow Lane #2329
  335.                Arlington, Texas  75080
  336.                Ph: 214/437-7949  - Voice
  337.                    817/695-0058  - BBS
  338.  
  339.                CompuServe: 72240,3122
  340.                Bix:        vsix
  341.                FidoNet:    1:124/4003.0
  342.  
  343.           Please feel free to contact me at any time to share your comments
  344.           about my software and/or licensing policy.
  345.  
  346.           6
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.                                   Syntax Conventions
  355.  
  356.           This documentation uses the following syntax conventions:
  357.  
  358.           ...       Ellipsis means something was omitted.
  359.  
  360.           < >       Metavariable: something you must furnish
  361.  
  362.           <exp?>    Expression of  specific data-type where ?  equals C for
  363.                     character, D for date, N for numeric, M for memo, L for
  364.                     logical or any type if omitted.
  365.  
  366.           <memvar>  Name of a memory variable
  367.  
  368.           []        Optional syntax.
  369.  
  370.           [...]     Option may be repeated zero or more times.
  371.  
  372.           |         A choice: ON | OFF, Numeric | Date, etc.
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.                                                                           7
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.                      How my programs are assigned version numbers
  416.  
  417.  
  418.           With  any   programming  effort  there  are   several  phases  of
  419.           development.  The phases  that my products go through  are listed
  420.           below.
  421.  
  422.           Phase 1) Planning & Design
  423.  
  424.                This  is where  the product  is completely  laid out.   i.e.
  425.                Exactly  what do  we want  to accomplish with  this product?
  426.                What are the major steps necessary to accomplish this?  Data
  427.                normalization, etc.
  428.  
  429.           Phase 2) Detail definition
  430.  
  431.                During this  phase I  break the  total product  into several
  432.                much  smaller  pieces.    i.e.     What  are  the   database
  433.                structures?  What will the screens look like?  etc.
  434.  
  435.           Phase 3) Program Development
  436.  
  437.                This is  phase where  I try to  put several  of the  smaller
  438.                pieces together.  This is also known as the "Alpha" stage of
  439.                the product.  Several  test releases of the product  will be
  440.                made  during this  time.  These releases  are called  "Alpha
  441.                releases".
  442.  
  443.                An  "Alpha" release  signifies that  new development  on the
  444.                product has taken  place.   i.e.  new  functions &  features
  445.                have been added since the last "Alpha" release.
  446.  
  447.           Phase 4) Debugging & Final Polishing
  448.  
  449.                This phase begins when  all the smaller pieces are  in place
  450.                and all "Alpha" releases have stopped.  This is known as the
  451.                "Beta"  stage of  the  product.    Several releases  of  the
  452.                product  will be made during this time.  Each release during
  453.                this phase is called a "Beta release".
  454.  
  455.                A "Beta" release signifies that a "bug" has  been eliminated
  456.                since the last "Beta" release.
  457.  
  458.           Phase 5) Documentation
  459.  
  460.                The user documentation is developed and written.
  461.  
  462.           Phase 6) Release to public
  463.  
  464.                Release to public  is the final  stage of the product.   The
  465.                product is thought to be "bug free".
  466.  
  467.  
  468.           8
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.           Numbering....
  477.  
  478.                1.00.a1   First  Alpha release  of  v1.00 (v1.00  will be  a
  479.                          major release)
  480.  
  481.                1.00.a2   Second  Alpha release  of v1.00  (added  some more
  482.                          features)
  483.  
  484.                1.00.a3   Third  Alpha release  of  v1.00 (added  some  more
  485.                          features)
  486.  
  487.                1.00.b1   First  Beta release (stopped  adding features, now
  488.                          concentrating  on finding  bugs)    e.g.  Entering
  489.                          phase 4
  490.  
  491.                1.00.b2   Second Beta release (fixed some bugs)
  492.  
  493.                1.00.b3   Third Beta release (fixed some more bugs)
  494.  
  495.                1.00      First Public  release (a/k/a  Major Release)    No
  496.                          known bugs!
  497.  
  498.                1.01      Fixed some minor bug(s)  that were not detected in
  499.                          Beta Test stage (usually a spelling error, etc.)
  500.  
  501.                1.10      Fixed some major bug(s)  that were not detected in
  502.                          Beta   Test   stage   OR   added    some   program
  503.                          functionality   that   wasn't   thought    of   at
  504.                          development time.
  505.  
  506.                2.00.a1   First  Alpha release  of  v2.00 (v2.00  will be  a
  507.                          major release)  i.e. v2.00 starts back at phase 1.
  508.                          and is (for all pratical purposes) a new product.
  509.                .
  510.                .
  511.                .
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.                                                                           9
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.           ASK()
  538.  
  539.           Description:   ASK() prompts  the user with a  one line question.
  540.                          ASK() will return  a one character  response which
  541.                          can be  limited to specific characters.   ASK() is
  542.                          non-screen destructive.
  543.  
  544.           Syntax:        <memvar>  = ASK(  <expC1>, <expC2>  [, <expN1>  [,
  545.                          <expN2>] ] )
  546.  
  547.           Pass:          <expC1>  = Question  to  ask (do  not include  the
  548.                          question mark)
  549.  
  550.                          <expC2> = List of acceptable characters (the first
  551.                          character  in  the list  is  used  as the  default
  552.                          answer)
  553.  
  554.                          <expN1> = Optional: Top row of window
  555.  
  556.                          <expN2> = Optional: Left column of window
  557.  
  558.           Return:        <expC> = Key the user pressed
  559.  
  560.           Notes:         The  first letter of  <expC2> will be  used as the
  561.                          default answer.
  562.  
  563.           Example:       IF ASK("Do you want to continue","YyNn") $ "Nn"
  564.                             QUIT
  565.                          ENDIF
  566.                          .
  567.                          .
  568.                          .
  569.  
  570.           See also:      ASK2(), DISPMSG(), VWIND()
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.           10
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.           ASK2()
  599.  
  600.           Description:   ASK2()  prompts  the  user with  a  multiple  line
  601.                          question.    ASK2() will  return  a one  character
  602.                          response   which  can   be  limited   to  specific
  603.                          characters.  ASK2() is non-screen destructive.
  604.  
  605.           Syntax:        <memvar>   =   ASK2(  <expA>,   <expN1>,  <expC1>,
  606.                          <expC2>, <expC3> [, <expN2> [, <expN3>] ] )
  607.  
  608.           Pass:          <expA>  = Name of array containing question
  609.  
  610.                          <expN1> = Number of elements to display
  611.  
  612.                          <expC1> = Box Title (top - offset to left)
  613.  
  614.                          <expC2> = Box Footnote (bottom - centered)
  615.  
  616.                          <expC3> = List of acceptable characters (the first
  617.                          character  in  the list  is  used  as the  default
  618.                          answer)
  619.  
  620.                          <expN2> = Optional: Top row of window
  621.  
  622.                          <expN3> = Optional: Left column of window
  623.  
  624.           Return:        <expC> = Key the user pressed
  625.  
  626.           Notes:         The first  letter of <expC3>  will be used  as the
  627.                          default answer.
  628.  
  629.           Example:       _msg[1] = "This is line one of the question"
  630.                          _msg[2] = "This is line two"
  631.                          _msg[3] = "Which line do you like best"
  632.                          memvar = ASK2(_msg,3,"Title","Footnote","123")
  633.                          ? "You selected line number" + memvar
  634.                          .
  635.                          .
  636.                          .
  637.  
  638.           See Also:      ASK(), DISPMSG(), VWIND()
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.                                                                          11
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.           CENTER()
  660.  
  661.           Description:   CENTER() allows  you to  center a string  within a
  662.                          given width.
  663.  
  664.           Syntax:        CENTER( <expC> [, <expN>] )
  665.  
  666.           Pass:          <expC> = String to be centered
  667.  
  668.                          <expN> = Optional: width (default is 80)
  669.  
  670.           Return:        <expN> = Position to print string at
  671.  
  672.           Example:       The  following  example  would center  the  string
  673.                          "This is a test" on line ten of your screen.
  674.  
  675.                          censtr = "This is a test"
  676.                          @ 10,CENTER(censtr) SAY censtr
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.           12
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.           DISPMSG()
  721.  
  722.           Description:   Displays a  message in  a window (centered  on the
  723.                          screen)
  724.  
  725.           Syntax:        DISPMSG(  <expA>,  <expN1>,  <expC1>,  <expC2>  [,
  726.                          <expN2> [, <expN3>] ] )
  727.  
  728.           Pass:          <expA>  = Name of array containing message
  729.  
  730.                          <expN1> = Number of elements to display
  731.  
  732.                          <expC1> = Box Title (top - offset to left)
  733.  
  734.                          <expC2> = Box Footnote (bottom - centered)
  735.  
  736.                          <expN2> = Optional: Top row of window
  737.  
  738.                          <expN3> = Optional: Left column of window
  739.  
  740.           Return:        <expL> = Always True
  741.  
  742.           Notes:         _msg[]  is declared  PUBLIC  in INITVERN().    The
  743.                          maximum  number of  elements  you  can specify  is
  744.                          twenty (20).
  745.  
  746.           Example:       _msg[1] = "This is line one"
  747.                          _msg[2] = "This is line two"
  748.                          DISPMSG(_msg,2,"Title","Footnote")
  749.  
  750.           See Also:      VWIND()
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.                                                                          13
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.           FAKELOCK
  782.  
  783.           Description:   Simulates  a  global  network  lock   for  runtime
  784.                          testing  of logic  associated  with  network  file
  785.                          operations.
  786.  
  787.           Syntax:        SET KEY xxx TO FAKELOCK
  788.  
  789.           Pass:          Nothing 
  790.  
  791.           Return:        Nothing
  792.  
  793.           Usage:         FAKELOCK will  force all  of the Vern  Six network
  794.                          functions   (V_APPEND(),   V_FLOCK(),   V_RLOCK(),
  795.                          V_USE()) to act as  though they were unsuccessful.
  796.                          This is  useful for  testing your program  code to
  797.                          recover  from  such  failures.   If  the  variable
  798.                          _fakelock is  true, FAKELOCK will set  it to false
  799.                          and  vice-versa.  A non-screen destructive message
  800.                          will appear  telling you  whether or not  the fake
  801.                          lock is active or not.
  802.  
  803.           Notes:         If you are not programming your application to run
  804.                          on  a multi-user  network,  you do  not need  this
  805.                          procedure.
  806.  
  807.           See also:      V_APPEND(), V_FLOCK(), V_RLOCK(), V_USE()
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.           14
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.           FGBG2N()
  843.  
  844.           Description:   Converts a  foreground/background alphabetic color
  845.                          sequence to a numeric color as shown in SPECTRUM()
  846.  
  847.           Syntax:        <memvar> = FGBG2N( <expC> )
  848.  
  849.           Pass:          <expC> = Color to convert
  850.  
  851.           Return:        <expN> =  Numeric  representation   of  <expC>  as
  852.                                    defined in SPECTRUM()
  853.  
  854.           Usage:         This function is used primarily in GETCOLOR()
  855.  
  856.           Example:       memvar = FGBG2N("W+/N")
  857.                          .
  858.                          .
  859.                          .
  860.  
  861.           See Also:      GETCOLOR(), N2FGBG(), SPECTRUM()
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.                                                                          15
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.           FSELECT()
  904.  
  905.           Description:   FSELECT()  allows  you to  query  the  user for  a
  906.                          filename matching a  wildcard specification.   The
  907.                          user  will  be able  to move  a  light bar  to the
  908.                          filename that he/she wishes to select.
  909.  
  910.           Syntax:        <memvar>  =  FSELECT(  <expC1>, <expN1>,  <expN2>,
  911.                          <expN3>, <expC2>, <expC3> )
  912.  
  913.           Pass:          <expC1> = Wildcard  of  files  to  display.    May
  914.                                    include path.  i.e.  "C:\TEST\*.*"
  915.  
  916.                          <expN1> = Top row of window
  917.  
  918.                          <expN2> = Left column of window
  919.  
  920.                          <expN3> = Maximum number of file names  to display
  921.                                    in window
  922.  
  923.                          <expC2> = Box Title (top - offset to left)
  924.  
  925.                          <expC3> = Box Footnote (bottom - centered)
  926.  
  927.           Return:        <expC> =  Filename the user selected.
  928.  
  929.           Example:       m        e        m        v        a        r   =
  930.                          FSELECT("*.FRM",5,5,15,"Title","Footnote")
  931.                          IF .NOT. EMPTY(memvar)
  932.                             REPORT FORM &memvar TO PRINT
  933.                          ENDIF
  934.                          .
  935.                          .
  936.                          .
  937.  
  938.           See Also:      VWIND()
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.           16
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.           GETCOLOR()
  965.  
  966.           Description:   Prompts  the user  for the  various color  schemes
  967.                          (text and  windowed) that  he/she wants to  use in
  968.                          your program.
  969.  
  970.           Syntax:        GETCOLOR()
  971.  
  972.           Pass:          Nothing
  973.  
  974.           Return:        <expL> = Always true
  975.  
  976.           Usage:         GETCOLOR() will display the full color spectrum on
  977.                          the  screen   and   ask  the   user  for   his/her
  978.                          preferences while in your program.
  979.  
  980.           See Also:      FGBG2N(), N2FGBG(), SPECTRUM() 
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.                                                                          17
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.           GETCOORD
  1026.  
  1027.           Description:   Allows  the  user to  size  a  box on  the  screen
  1028.                          through  the  use  of  the  cursor  control  keys.
  1029.                          Returns   to   the   top,left   and   bottom,right
  1030.                          coordinates to your program.
  1031.  
  1032.           Syntax:        DO    GETCOORD   WITH    <memvarN1>,   <memvarN2>,
  1033.                          <memvarN3>, <memvarN4>
  1034.  
  1035.           Pass:          <memvarN1> = Top Row
  1036.                          
  1037.                          <memvarN2> = Left Column
  1038.  
  1039.                          <memvarN3> = Bottom Row
  1040.  
  1041.                          <memvarN4> = Right Column
  1042.  
  1043.           Return:        Your variables will be changed to the new values
  1044.  
  1045.           Usage:         When this procedure  is called you will  see a box
  1046.                          appear on the screen  (at the starting coordinates
  1047.                          you  specified).  The cursor will  be in the upper
  1048.                          left hand corner  of the  box.  You  may move  the
  1049.                          corner around  the  screen  by  using  the  cursor
  1050.                          control keys.
  1051.  
  1052.                          If you press the [HOME] key, the cursor will  move
  1053.                          from the upper left corner of the box to the lower
  1054.                          right corner.  You can now move this corner of the
  1055.                          box around the screen  by using the cursor control
  1056.                          keys.   Pressing  the [HOME]  key will  once again
  1057.                          place the cursor  in the upper left corner  of the
  1058.                          box.
  1059.  
  1060.                          When  the box is the  size and is  in the location
  1061.                          you want, press the [RETURN] key.
  1062.  
  1063.           Notes:         Box remains on screen when procedure returns
  1064.  
  1065.           Example:       top    = 5
  1066.                          left   = 10
  1067.                          bottom = 20
  1068.                          right  = 70
  1069.                          DO GETCOORD WITH top,left,bottom,right
  1070.                          .
  1071.                          .
  1072.                          .
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.           18
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.           GRABSCRN()
  1087.  
  1088.           Description:   Captures contents of the screen  (including cursor
  1089.                          location, screen attributes,  etc.) to be  used in
  1090.                          conjunction with PUTSCRN().
  1091.  
  1092.           Syntax:        GRABSCRN()
  1093.  
  1094.           Pass:          Nothing
  1095.  
  1096.           Return:        <expL> = Always True
  1097.  
  1098.           Usage:         Clipper's  SAVE SCREEN  command doesn't  quite fit
  1099.                          the bill  for most  screen save operations.   i.e.
  1100.                          it  doesn't save  the  cursor  position or  screen
  1101.                          attributes.   GRABSCRN() saves all these important
  1102.                          aspects  of  your  screen and  will  restore  them
  1103.                          properly when you call PUTSCRN().
  1104.  
  1105.           Example:       GRABSCRN()
  1106.                          <memvar> = ASK("Do you want to continue","Yawn")
  1107.                          PUTSCRN()
  1108.                          .
  1109.                          .
  1110.                          .
  1111.  
  1112.           See Also:      PUTSCRN()
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.                                                                          19
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.           HELP
  1148.  
  1149.           Description:   HELP provides a non-screen-destructive help screen
  1150.                          based  on the  calling program and  variable name.
  1151.                          Help screens  can be added  at any time  after the
  1152.                          program  is  compiled,  through  the  use  of  the
  1153.                          MAKEHLP   procedure   and   are  fully   "context"
  1154.                          sensitive.
  1155.  
  1156.           Syntax:        SET KEY <expN> TO HELP
  1157.  
  1158.           Pass:          Nothing (other than  the normal  things passed  by
  1159.                          SET  KEY)   Note:  See  _helpprg  and _helpvar  in
  1160.                          Global Variables.
  1161.  
  1162.           Return:        Nothing
  1163.  
  1164.           Usage:         You must  call the  INITHELP()  function prior  to
  1165.                          issuing "SET KEY <expN> to HELP".  INITVERN() will
  1166.                          open a database with  an ALIAS() of "HELP" in  the
  1167.                          next available work space. The structure and index
  1168.                          key for this database is listed below. 
  1169.  
  1170.  
  1171.                          Field Name    Type     Len   Dec
  1172.                          --------------------------------
  1173.                          PROGRAM       Char      10     0
  1174.                          VARIABLE      Char      10     0
  1175.                          TOPROW        Num        2     0
  1176.                          LEFTCOL       Num        2     0
  1177.                          BOTROW        Num        2     0
  1178.                          RIGHTCOL      Num        2     0
  1179.                          HELPTEXT      Memo      10     0
  1180.                          --------------------------------
  1181.                          Index File: HELP.N?X
  1182.                           Index Key: PROGRAM+VARIABLE
  1183.  
  1184.                          Because  of the  index key  of this  database, you
  1185.                          should be careful  to use a variable  only once in
  1186.                          any  given  program.   i.e.  If you  use  the same
  1187.                          variable more  than once,  you will have  the same
  1188.                          help screen for each time it is used.
  1189.  
  1190.           Notes:         If _helpprg  or _helpvar are not  empty, HELP will
  1191.                          base  itself on  the  values  these two  variables
  1192.                          contain.
  1193.  
  1194.                          Be  sure to  include the  line "EXTERNAL  HELP" in
  1195.                          your main program.
  1196.  
  1197.           See Also:      INITHELP(), MAKEHLP
  1198.  
  1199.  
  1200.           20
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.           INITHELP()
  1209.  
  1210.           Description:   This function  creates  the necessary  HELP  files
  1211.                          (DBF,  DBT and  N?X)  in the  next available  work
  1212.                          area.
  1213.  
  1214.           Syntax:        INITHELP( [<expC>] )
  1215.  
  1216.           Pass:          <expC> =  Optional: Name of  keyfile required  for
  1217.                                    MAKEHLP  to  work properly.    Default =
  1218.                                    "VERNSIX.DVP"
  1219.  
  1220.           Return:        <expL> = Always True
  1221.  
  1222.           Notes:         Be sure  to include the lines  "EXTERNAL HELP" and
  1223.                          "EXTERNAL MAKEHLP" in your main program.
  1224.  
  1225.           Example:       INITHELP("yourfile.txt")
  1226.  
  1227.           See Also:      HELP, MAKEHLP
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.                                                                          21
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.           INITVERN()
  1270.  
  1271.           Description:   Initializes  the  variables  used  by  the various
  1272.                          functions  in this  library  as well  as sets  the
  1273.                          colors from the  configuration database or creates
  1274.                          the configuration database if it doesn't exist.
  1275.  
  1276.           Syntax:        INITVERN( [<expC1>] )
  1277.  
  1278.           Pass:          <expC1> = Optional: Name of configuration database
  1279.                                    without the ".DBF"  Default = "VERN_CFG"
  1280.  
  1281.           Return:        <expL> = Always True
  1282.  
  1283.           Notes:         INITVERN() must be either the first or second line
  1284.                          in your main program.  You must not use INITVERN()
  1285.                          more than once in your program!!  
  1286.  
  1287.                          If your application  is going to  run on a  multi-
  1288.                          user network, you must  SET EXCLUSIVE OFF prior to
  1289.                          calling INITVERN().  
  1290.  
  1291.           Example:       SET EXCLUSIVE OFF
  1292.                          INITVERN("myfile")
  1293.                          .
  1294.                          .
  1295.                          .
  1296.  
  1297.                          or
  1298.  
  1299.                          INITVERN()
  1300.                          .
  1301.                          .
  1302.                          .
  1303.  
  1304.  
  1305.           See Also:      GETCOLOR()
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.           22
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.           MAKEHLP
  1331.  
  1332.           Description:   Allows the developer to design a help screen after
  1333.                          the application is compiled.  
  1334.  
  1335.           Syntax:        SET KEY <expN> TO MAKEHLP
  1336.  
  1337.           Pass:          Nothing (other  than the  normal things  passed by
  1338.                          SET  KEY)    NOTE:  See  _helpprg,  _helpline  and
  1339.                          _helpvar in Global Variables Section
  1340.  
  1341.           Return:        Nothing
  1342.  
  1343.           Usage:         When this  routine is called,  you will see  a box
  1344.                          appear on  the screen.   You should  size the  box
  1345.                          using the technique described in GETCOORD.
  1346.  
  1347.                          When you have a box that is suitable for your help
  1348.                          window,  press [RETURN].   At  this point  you may
  1349.                          edit  the help  text as  you wish.   When  you are
  1350.                          done, press Ctrl-W.
  1351.  
  1352.           Notes:         If the file contained in variable "_keyfile"  does
  1353.                          not  exist, this function  will return immediately
  1354.                          and not allow you to create/edit a help screen.
  1355.  
  1356.                          If  _helpprg or  _helpvar are  not  empty, MAKEHLP
  1357.                          will base itself on the values these two variables
  1358.                          contain.
  1359.  
  1360.                          Be sure to include  the line "EXTERNAL MAKEHLP" in
  1361.                          your main program.
  1362.  
  1363.           See Also:      HELP, INITHELP()
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.                                                                          23
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.           N2FGBG()
  1392.  
  1393.           Description:   Converts     a     numeric     color      to     a
  1394.                          foreground/background alphabetic color sequence as
  1395.                          shown in SPECTRUM()
  1396.  
  1397.           Syntax:        <memvar> = N2FGBG( <expN> )
  1398.  
  1399.           Pass:          <expN> =  Color to convert
  1400.  
  1401.           Return:        <expC> =  Alphabetic  representation of  <expN> as
  1402.                                    defined in SPECTRUM()
  1403.  
  1404.           Usage:         This function is used primarily in GETCOLOR()
  1405.  
  1406.           Example:       memvar = FGBG2N(31)
  1407.                          .
  1408.                          .
  1409.                          .
  1410.  
  1411.           See Also:      GETCOLOR(), FGBG2N(), SPECTRUM()
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.           24
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.           PUTSCRN()
  1453.  
  1454.           Description:   Restores a screen captured with GRABSCRN()
  1455.  
  1456.           Syntax:        PUTSCRN()
  1457.  
  1458.           Pass:          Nothing
  1459.  
  1460.           Return:        <expL> = Always true
  1461.  
  1462.           Notes:         To  clear the  GRABSCRN() stack, set  the variable
  1463.                          GRABCNT to zero.
  1464.  
  1465.           Example:       GRABSCRN()
  1466.                          memvar = ASK("Do you want to continue","Yawn")
  1467.                          PUTSCRN()
  1468.                          .
  1469.                          .
  1470.                          .
  1471.  
  1472.           See Also:      GRABSCRN()
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.                                                                          25
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.           REMKEY()
  1514.  
  1515.           Description:   Removes   the  reference  to   VINDEX()  from  the
  1516.                          specified NTX file.
  1517.  
  1518.           Syntax:        REMKEY( <expC1>, <expC2> )
  1519.  
  1520.           Pass:          <expC1> = The portion of the index key that you
  1521.                                    want removed.
  1522.  
  1523.                          <expC2> = Name of the NTX file to remove the key
  1524.                                    from.
  1525.  
  1526.           Return:        <expL>  = .T. = Success, .F. = Failure
  1527.  
  1528.           Usage:         One  of the  side  effects of  using VINDEX(),  or
  1529.                          other routines similiar to it, is that the name of
  1530.                          the function is  a part  of the KEY  in the  index
  1531.                          file's  header.   The  function  in  the key  only
  1532.                          returns a NULL byte,  the mere fact that it  is in
  1533.                          the  header  of  the  file  indiciates   that  any
  1534.                          operation  involving  the  index  file  will  make
  1535.                          subsequent calls to the  function.  This will slow
  1536.                          things down.   REMKEY() will remove  the reference
  1537.                          to the  function (VINDEX())  from  the NTX  file's
  1538.                          header so any  operation involving the index  file
  1539.                          will  no  longer  make  subsequent  calls  to  the
  1540.                          function.
  1541.  
  1542.           Example:       n_temp = 0
  1543.                          USE SAMPLE
  1544.                          INDEX ON WHATEVER + WHATELSE + ;
  1545.                               VINDEX("SAMPLE.NTX",@n_temp) TO SAMPLE
  1546.                          USE  && Closes the open DBF and NTX File!!!
  1547.  
  1548.                          c_temp = [ + VINDEX("SAMPLE.NTX",@n_temp) ]
  1549.                          REMKEY(c_temp,"SAMPLE.NTX")
  1550.  
  1551.                          USE SAMPLE INDEX SAMPLE
  1552.                          ...
  1553.  
  1554.           See Also:      VINDEX() and VERNDEMO.PRG
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.           26
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.           SPECTRUM()
  1575.  
  1576.           Description:   Displays the complete color spectrum (all possible
  1577.                          colors) on the  screen with a  number representing
  1578.                          each.
  1579.  
  1580.           Syntax:        SPECTRUM()
  1581.  
  1582.           Pass:          Nothing
  1583.  
  1584.           Return:        <expL> = Always true
  1585.  
  1586.           Usage:         SPECTRUM() is used primarily in GETCOLOR().
  1587.  
  1588.           See Also:      FGBG2N(), GETCOLOR(), N2FGBG()
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.                                                                          27
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.           TEXTCOLR()
  1636.  
  1637.           Description:   Sets color to normal text colors as defined by the
  1638.                          configuration database.
  1639.  
  1640.           Syntax:        TEXTCOLR()
  1641.  
  1642.           Pass:          Nothing
  1643.  
  1644.           Return:        <expL> = Always True
  1645.  
  1646.           Notes:         See GETCOLOR().
  1647.  
  1648.           See Also:      VWIND(), WINDCOLR()
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.           28
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.           V_APPEND() 
  1697.  
  1698.           Description:   Adds a blank record to the currently selected file
  1699.                          or notifies user if unsuccessful.
  1700.  
  1701.           Syntax:        V_APPEND()
  1702.  
  1703.           Pass:          Nothing
  1704.  
  1705.           Return:        <expL> = .T. if successful, otherwise .F.
  1706.  
  1707.           Usage:         V_APPEND() will  try to  append a blank  record to
  1708.                          the   currently   selected   file.     If   it  is
  1709.                          unsuccessful,  a  non-screen  destructive  message
  1710.                          stating "Waiting for busy  network.  Press any key
  1711.                          to  abort."   will  appear  on   the  screen   and
  1712.                          V_APPEND() will  continue to endlessly  attempt to
  1713.                          append  a blank  record to the  currently selected
  1714.                          database.   If  the user  aborts the  operation by
  1715.                          pressing a key, V_APPEND()  will return a  logical
  1716.                          value of  false. If V_APPEND() returns  a value of
  1717.                          false, its your job as the programmer to abort the
  1718.                          operation and recover properly.
  1719.  
  1720.           Notes:         Be  sure to SET EXCLUSIVE  OFF at the  top of your
  1721.                          program so that files may be used by more than one
  1722.                          user on your network.  If you  are not programming
  1723.                          your   application  to   run   on   a   multi-user
  1724.                          application, you do not need this function.
  1725.  
  1726.           Example:       DO WHILE whatever
  1727.                             IF .NOT. V_APPEND()
  1728.                                _msg[1] = "Unable to add blank record"
  1729.                                _msg[2] = "Operation aborted"
  1730.                                DISPMSG(_msg,2,"","")
  1731.                                INKEY(5)
  1732.                                EXIT
  1733.                             ENDIF
  1734.                             .
  1735.                             .
  1736.                             .
  1737.                          ENDDO
  1738.                          .
  1739.                          .
  1740.                          .
  1741.  
  1742.           See Also:      FAKELOCK, V_FLOCK(), V_RLOCK(), V_USE()
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.                                                                          29
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.           V_FLOCK()
  1758.  
  1759.           Description:   Locks the currently selected  file or notifies the
  1760.                          user if unsuccessful.
  1761.  
  1762.           Syntax:        V_FLOCK()
  1763.  
  1764.           Pass:          Nothing
  1765.  
  1766.           Return:        <expL> = .T. if successful, otherwise .F.
  1767.  
  1768.           Usage:         V_FLOCK() will try to lock  the currently selected
  1769.                          file.     If  it  is  unsuccessful,  a  non-screen
  1770.                          destructive  message  stating  "Waiting  for  busy
  1771.                          network.   Press any key to abort." will appear on
  1772.                          the   screen  and   V_FLOCK()  will   continue  to
  1773.                          endlessly attempt  to lock the  currently selected
  1774.                          database.   If  the user  aborts the  operation by
  1775.                          pressing a key,  V_FLOCK() will  return a  logical
  1776.                          value of  false. If  V_FLOCK() returns a  value of
  1777.                          false, its your job as the programmer to abort the
  1778.                          operation and recover properly.
  1779.  
  1780.           Notes:         Be  sure to SET EXCLUSIVE  OFF at the  top of your
  1781.                          program so that files may be used by more than one
  1782.                          user on your network.   If you are not programming
  1783.                          your   application   to   run   on   a  multi-user
  1784.                          application, you do not need this function.
  1785.  
  1786.           Example:       DO WHILE whatever
  1787.                             IF .NOT. V_FLOCK()
  1788.                                _msg[1] = "Unable to lock current file"
  1789.                                _msg[2] = "Operation aborted"
  1790.                                DISPMSG(_msg,2,"","")
  1791.                                INKEY(5)
  1792.                                EXIT
  1793.                             ENDIF
  1794.                             .
  1795.                             .
  1796.                             .
  1797.                          ENDDO
  1798.                          .
  1799.                          .
  1800.                          .
  1801.  
  1802.           See Also:      FAKELOCK, V_APPEND(), V_RLOCK(), V_USE()
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.           30
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.           V_RLOCK()
  1819.  
  1820.           Description:   Locks  the currently  selected record  or notifies
  1821.                          the user if unsuccessful.
  1822.  
  1823.           Syntax:        V_RLOCK()
  1824.  
  1825.           Pass:          Nothing
  1826.  
  1827.           Return:        <expL> = .T. if successful, otherwise .F.
  1828.  
  1829.           Usage:         V_RLOCK() will try to lock  the currently selected
  1830.                          record.   If  it  is  unsuccessful,  a  non-screen
  1831.                          destructive  message  stating  "Waiting  for  busy
  1832.                          network.   Press any key to abort." will appear on
  1833.                          the   screen  and   V_RLOCK()  will   continue  to
  1834.                          endlessly attempt  to lock the  currently selected
  1835.                          database.   If  the user  aborts the  operation by
  1836.                          pressing a key,  V_RLOCK() will  return a  logical
  1837.                          value of  false. If  V_RLOCK() returns a  value of
  1838.                          false, its your job as the programmer to abort the
  1839.                          operation and recover properly.
  1840.  
  1841.           Notes:         Be  sure to SET EXCLUSIVE  OFF at the  top of your
  1842.                          program so that files may be used by more than one
  1843.                          user on your network.   If you are not programming
  1844.                          your   application   to   run   on   a  multi-user
  1845.                          application, you do not need this function.
  1846.  
  1847.           Example:       DO WHILE whatever
  1848.                             IF .NOT. V_RLOCK()
  1849.                                _msg[1] = "Unable to lock current file"
  1850.                                _msg[2] = "Operation aborted"
  1851.                                DISPMSG(_msg,2,"","")
  1852.                                INKEY(5)
  1853.                                EXIT
  1854.                             ENDIF
  1855.                             .
  1856.                             .
  1857.                             .
  1858.                          ENDDO
  1859.                          .
  1860.                          .
  1861.                          .
  1862.  
  1863.           See Also:      FAKELOCK, V_APPEND(), V_FLOCK(), V_USE()
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.                                                                          31
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.           V_USE()
  1880.  
  1881.           Description:   Opens a file in the  current work area or notifies
  1882.                          the user if  unsuccessful.  The  file can have  an
  1883.                          ALIAS specified as well as EXCLUSIVE use set on or
  1884.                          off.
  1885.  
  1886.           Syntax:        V_USE( <expC1>, <expL> [, <expC2>] )
  1887.  
  1888.           Pass:          <expC1> = Name of database to open
  1889.  
  1890.                          <expL>  = .T. to open file exclusively
  1891.                                    .F. to open file in shared mode
  1892.  
  1893.                          <expC2> = Optional:  ALIAS name  to assign  to the
  1894.                                    file
  1895.  
  1896.           Return:        <expL> =  .T. if successful, otherwise .F.
  1897.  
  1898.           Usage:         V_USE() will try to open the filename contained in
  1899.                          <expC1> in the mode specified in <expL>.  If it is
  1900.                          unsuccessful,  a  non-screen  destructive  message
  1901.                          stating "Waiting for busy  network.  Press any key
  1902.                          to abort."  will appear on the  screen and V_USE()
  1903.                          will continue  to endlessly  attempt  to open  the
  1904.                          file in  the mode specified.   If the  user aborts
  1905.                          the  operation  by  pressing a  key,  V_USE() will
  1906.                          return  a  logical  value  of  false.  If  V_USE()
  1907.                          returns a  value of  false, its  your  job as  the
  1908.                          programmer  to  abort  the  operation  and recover
  1909.                          properly.  If specified,  the filename opened will
  1910.                          have an ALIAS of the value contained in <expC2>.
  1911.  
  1912.           Notes:         Be  sure to SET EXCLUSIVE  OFF at the  top of your
  1913.                          program so that files may be used by more than one
  1914.                          user on your network.  If you  are not programming
  1915.                          your   application  to   run   on   a   multi-user
  1916.                          application, you do not need this function.
  1917.  
  1918.           Example:       DO WHILE whatever
  1919.                             IF .NOT. V_USE("testfile",.F.)
  1920.                                _msg[1] = "Unable to open file"
  1921.                                _msg[2] = "Operation aborted"
  1922.                                DISPMSG(_msg,2,"","")
  1923.                                INKEY(5)
  1924.                                EXIT
  1925.                             ENDIF
  1926.                             .
  1927.                             .
  1928.                          ENDDO
  1929.  
  1930.           See Also:      FAKELOCK, V_APPEND(), V_FLOCK(), V_RLOCK()
  1931.  
  1932.           32
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.           VEDIT()
  1941.  
  1942.           Description:   Emulates the dBASE III+ "Edit" command by allowing
  1943.                          the  user  to  page  back and  forth  through  the
  1944.                          database  records  and   optionally  editing   the
  1945.                          selected record.
  1946.  
  1947.           Syntax:        VEDIT( [<expC1>,] <expC2>, <expC3>, [<expL>] )
  1948.  
  1949.           Pass:          <expC1> = Optional:  Name  of  your  procedure  to
  1950.                                    display  field  descriptions, etc.  i.e.
  1951.                                    setup the screen.
  1952.  
  1953.                          <expC2> = Name  of your  procedure  to "view"  the
  1954.                                    currently  selected  record.   If empty,
  1955.                                    VEDIT() will return the  calling program
  1956.                                    a value of 0.
  1957.  
  1958.                          <expC3> = Name  of  your   procedure  "edit"   the
  1959.                                    currently  selected  record.   If empty,
  1960.                                    VEDIT()  will  return  to   the  calling
  1961.                                    program a value of 13.
  1962.  
  1963.                          <expL>  = Optional: .T. = Database is indexed
  1964.                                              .F. = Database not indexed
  1965.  
  1966.           Return:        <expN> =  Last  key  the  user  pressed  (look  at
  1967.                                    INKEY())
  1968.  
  1969.           Usage:         VEDIT() is  very useful for working  with a "flat"
  1970.                          database.  VEDIT() controls  all the moving around
  1971.                          inside your database  and will handle  SEEKs based
  1972.                          on a pressed key, etc.
  1973.  
  1974.                          "View Mode" active keys
  1975.                          -----------------------
  1976.                          Esc     - Exit VEDIT() (returns 27 to calling prg)
  1977.                          Home    - Move to first record
  1978.                          End     - Move to last record
  1979.                          PgUp    - Move to previous record
  1980.                          PgDn    - Move to next record
  1981.                          Return  - Edit currently displayed record
  1982.                          Del     - Delete/Recall currently displayed record
  1983.                          Ins     - Append a new record
  1984.  
  1985.                          Any AlphaNumeric character  invokes a SEEK  to the
  1986.                          first  record  beginning  with  the  pressed  key.
  1987.                          HENCE you must have an INDEX open for the database
  1988.                          prior  to calling  VEDIT() or  pass <expL>  with a
  1989.                          value of .F.
  1990.  
  1991.                          Any other  key causes  VEDIT() to exit  and return
  1992.  
  1993.                                                                          33
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.                          the  value  of  the  pressed key  to  the  calling
  2002.                          program.
  2003.  
  2004.                          Its your  job, as  the programmer, to  place menus
  2005.                          (if  desired)  on the  screen  in  your procedures
  2006.                          named in <expC2>  and <expC3>.  Its also  your job
  2007.                          to CLEAR GETS  or READ in your procedures named in
  2008.                          <expC2> and <expC3>.
  2009.  
  2010.                          WARNING!!! Be  certain to set the  memory variable
  2011.                          _startrec  to the desired starting record prior to
  2012.                          calling VEDIT().
  2013.  
  2014.           Example:       See enclosed VERNDEMO.PRG
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.           34
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.           VFILT()
  2063.  
  2064.           Description:   Provides  a non-screen-destructive  user interface
  2065.                          to  allow  the user  to select  a list  of fields,
  2066.                          logical connectives, and comparison constants from
  2067.                          pop up light bar windows.
  2068.  
  2069.                          VFILT draws information from  the database open in
  2070.                          the  work  area  currently  selected  when  it  is
  2071.                          invoked.
  2072.  
  2073.           Syntax:        VFILT()
  2074.  
  2075.           Pass:          Nothing
  2076.  
  2077.           Return:        <expC> =  Desired  filter  (blank   if  the   user
  2078.                                    specified no filter requested)
  2079.  
  2080.           Usage:         VFILT()  is  designed to  provide  the uninitiated
  2081.                          user   with   an   easy  interface   to   "filter"
  2082.                          specification   building.      It    is   database
  2083.                          independent  and limits  the choices  available in
  2084.                          the light  bar menus to those  that are applicable
  2085.                          to  the  variable  type  selected.   As  the  user
  2086.                          selects    fields,   relational    operators   and
  2087.                          comparison constants, the string VFILT() builds is
  2088.                          also displayed on the screen.
  2089.  
  2090.                          VFILT() alone is not  a powerful function but when
  2091.                          combined with the macro  substitution capabilities
  2092.                          of Clipper,  the two become very  powerful indeed.
  2093.                          The string  returned by  VFILT()  is suitable  for
  2094.                          macro substitution in the SET FILTER TO command as
  2095.                          well  as in any FOR  clause in any Clipper command
  2096.                          supporting  that  clause  (such as  REPORT,  SORT,
  2097.                          COPY, LIST, etc..).
  2098.  
  2099.           Example:       USE MASTER INDEX MASTER
  2100.                          SET FILTER TO
  2101.                          userfilt = VFILT()
  2102.                          IF .NOT. EMPTY(userfilt)
  2103.                             SET FILTER TO &userfilt
  2104.                          ENDIF
  2105.                          .
  2106.                          .
  2107.                          .
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.                                                                          35
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.           VINDEX()
  2124.  
  2125.           Description:   Provides   the   programmer   with  a   non-screen
  2126.                          destructive "gas guage" type  of chart to show the
  2127.                          user  what  percentage of  the index  operation is
  2128.                          complete.  
  2129.  
  2130.           Syntax:        VINEX( <expC>, @<expN> )
  2131.  
  2132.           Pass:          <expC>  = NTX filename that is being created
  2133.  
  2134.                          @<expN> = Dummy numeric memory variable.  Must be
  2135.                                    set to zero.
  2136.  
  2137.           Return:        <expC>  = Always null
  2138.  
  2139.           Usage:         One of the biggest disadvantages of Clipper is the
  2140.                          inability   to  show  the  progress  of  an  index
  2141.                          operation.   While it can be argued  that the hard
  2142.                          drive access light is  sufficient to tell the user
  2143.                          that something is happening, a far  greater number
  2144.                          of users will  argue to  the contrary.   In  fact,
  2145.                          several users have been  known to turn the machine
  2146.                          off  while   in  the  middle  of   a  large  index
  2147.                          operation.  VINDEX() provides a user-friendly "gas
  2148.                          gauge" type of  display telling  the user  exactly
  2149.                          how things are progressing.
  2150.  
  2151.           Notes:         VINDEX() will create two PUBLIC variables that you
  2152.                          need to be aware of... n_Records and  n_RecPerCol.
  2153.                          This variables are needed  by VINDEX() and you can
  2154.                          remove them after the index operation.
  2155.  
  2156.           Example:       n_temp = 0
  2157.                          USE SAMPLE
  2158.                          INDEX ON WHATEVER + WHATELSE + ;
  2159.                               VINDEX("SAMPLE.NTX",@n_temp) TO SAMPLE
  2160.                          ...
  2161.                          ...
  2162.  
  2163.           See Also:      REMKEY()
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.           36
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.           VMENU()
  2185.  
  2186.           Description:   Provides  the  programmer  with a  very  fast  and
  2187.                          efficient means of producing "pull-down" menus for
  2188.                          their users.  VMENU() is screen-destructive.
  2189.  
  2190.           Syntax:        <memvar> = VMENU( <expAC1>, <expAN1>, <expAN2>,
  2191.                                     <expAC2> )
  2192.  
  2193.           Pass:          <expAC1> = List of all available menu options on
  2194.                                     all available menus (see VERNDEMO.PRG)
  2195.  
  2196.                          <expAN1> = List of where each menu begins
  2197.  
  2198.                          <expAN2> = List of where each menu ends
  2199.  
  2200.                          <expAC2> = List of messages for each menu option
  2201.  
  2202.           Return:        <expN>   = Which element of <expAC1> was selected
  2203.  
  2204.           Example:       See enclosed VERNDEMO.PRG
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.                                                                          37
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.           VSCRL()
  2246.  
  2247.           Description:   Allows  the  user  to BROWSE  through  a  database
  2248.                          (seeing   a  limited   number   of   fields)   and
  2249.                          selectively edit records.
  2250.  
  2251.           Syntax:        VSCRL(   <expN1>,   <expN2>,   <expN3>,   <expC1>,
  2252.                          <expC2>, <expC3>, <expC4> [, <expL>] )
  2253.  
  2254.           Pass:          <expN1> = Top Row of window
  2255.  
  2256.                          <expN2> = Left Column of window
  2257.  
  2258.                          <expN3> = Maximum number of lines in window
  2259.  
  2260.                          <expC1> = Macro   string  of  field  names  to  be
  2261.                                    display  on  each  line         Example:
  2262.                                    "FIRST+[ ]+LAST"
  2263.  
  2264.                          <expC2> = Your procedure  to edit the  record when
  2265.                                    the  user presses the  [RETURN] key.  If
  2266.                                    empty VSCRL() will return to the calling
  2267.                                    program a value of 13.
  2268.  
  2269.                          <expC3> = Title for top of window
  2270.  
  2271.                          <expC4> = Footnote for bottom of window
  2272.  
  2273.                          <expL>  = Optional: .T. if DBF is indexed
  2274.                                              .F. if DBF is not indexed
  2275.  
  2276.           Return:        <expN> =  Last  key  the  user  pressed  (look  at
  2277.                                    INKEY())
  2278.  
  2279.           Example:       See enclosed VERNDEMO.PRG
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.           38
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.           VSELECT()
  2307.  
  2308.           Description:   Allows the user to  select a record from currently
  2309.                          selected database.  
  2310.  
  2311.           Syntax:        VSELECT(   <expN1>,  <expN2>,   <expN3>,  <expC1>,
  2312.                          <expC2>, <expC3> [, <expL>] )
  2313.  
  2314.           Pass:          <expN1> = Top Row of window
  2315.  
  2316.                          <expN2> = Left Column of window
  2317.  
  2318.                          <expN3> = Maximum number of lines in window
  2319.  
  2320.                          <expC1> = Macro  string  of  field  names   to  be
  2321.                                    display  on  each  line         Example:
  2322.                                    "FIRST+[ ]+LAST"
  2323.  
  2324.                          <expC2> = Title for top of window
  2325.  
  2326.                          <expC3> = Footnote for bottom of window
  2327.  
  2328.                          <expL>  = Optional: .T. if DBF is indexed
  2329.                                              .F. if DBF is not indexed
  2330.  
  2331.           Return:        <expN> = Record number the user selected
  2332.  
  2333.           Notes:         This function is very similiar to  VSCRL(), except
  2334.                          no  editing   of  the   database  is   allowed  in
  2335.                          VSELECT().
  2336.  
  2337.           Example:       See enclosed VERNDEMO.PRG
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.                                                                          39
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.           VWIND()
  2368.  
  2369.           Description:   Draws  a window  with optional  shadow, color  and
  2370.                          custom box
  2371.  
  2372.           Syntax:        VWIND(   <expN1>,   <expN2>,   <expN3>,   <expN4>,
  2373.                          <expC1>, <expC2> )
  2374.  
  2375.           Pass:          <expN1> = top row
  2376.  
  2377.                          <expN2> = left column
  2378.  
  2379.                          <expN3> = bottom row
  2380.  
  2381.                          <expN4> = right column
  2382.  
  2383.                          <expC1> = Box Title (top - offset to left)
  2384.  
  2385.                          <expC2> = Box Footnote (bottom - centered)
  2386.  
  2387.           Return:        <expN> = Number of usable spaces in window
  2388.  
  2389.           Notes:         VWIND() will reset the colors screen attributes to
  2390.                          those used in WINDCOLR() when it is done.
  2391.  
  2392.           Example:       memvar = VWIND(1,10,20,70,"Testing","Press a key")
  2393.  
  2394.           See Also:      TEXTCOLR(), WINDCOLR(), GETCOLOR()
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.           40
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.           WINDCOLR()
  2429.  
  2430.           Description:   Sets color  to windowed text colors  as defined by
  2431.                          the configuration database.
  2432.  
  2433.           Syntax:        WINDCOLR()
  2434.  
  2435.           Pass:          Nothing
  2436.  
  2437.           Return:        <expL> = Always True
  2438.  
  2439.           See Also:      GETCOLOR(), VWIND()
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.                                                                          41
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.                                    Global Variables
  2490.                                    ----------------
  2491.  
  2492.           The function  INITVERN() sets  up the following  global variables
  2493.           for  use by several of  the functions contained  in this library.
  2494.           THESE  VARIABLES MUST BE SET UP PROPERLY OR ELSE YOUR APPLICATION
  2495.           WILL NOT OPERATE AS EXPECTED!
  2496.  
  2497.           For  the most  part  you need  not  concern yourself  with  these
  2498.           variables,  just know  that  they exist  and  you will  be  fine.
  2499.           AGAIN: INITVERN() takes care of setting all these up for you.
  2500.  
  2501.  
  2502.  
  2503.           Name           Purpose/Contents
  2504.           -----------------------------------------------------------------
  2505.           _nstd          <expC> = Normal Text Standard FG/BG
  2506.  
  2507.           _nenh          <expC> = Normal Text Enhanced FG/BG
  2508.  
  2509.           _nuns          <expC> = Normal Text Unselected FG/BG
  2510.  
  2511.           _wstd          <expC> = Windowed Text Standard FG/BG
  2512.  
  2513.           _wenh          <expC> = Windowed Text Enhanced FG/BG
  2514.  
  2515.           _wuns          <expC> = Windowed Text Unselected FG/BG
  2516.  
  2517.           _wbox          <expC> = Window Box FG/BG
  2518.  
  2519.           _wshd          <expC> = Window Shadow FG/BG
  2520.  
  2521.           _shadow        <expN> = 0 - Don't use shadow
  2522.                                   1 - Use character shadow
  2523.                                   2 - Use true shadow
  2524.  
  2525.           _shdfill       <expC> = Shadow fill character
  2526.  
  2527.           _boxtype       <expN> = 0 - Custom box (see _boxstr)
  2528.                                   1 - Single Box
  2529.                                   2 - Double Box
  2530.                                   3 - Double top and bottom, single sides
  2531.                                   4 - Single top and bottom, double sides
  2532.                                   5 - Double top, single sides and bottom
  2533.                                   6 - Double bottom, single sides and top
  2534.                                   7 - Bold box
  2535.                                   8+ - no box
  2536.  
  2537.           _boxstr        <expC> = Custom box string to use if _boxtype = 0
  2538.  
  2539.           _keyfile       <expC>  = Full name  of file that  must be present
  2540.                          for MAKEHLP to work.
  2541.  
  2542.           42
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.           _cfgfile       <expC>  =  Full  name  of  configuration  database
  2551.                          (colors, etc.)
  2552.  
  2553.           GRABCNT        <expN> = Number of screens on GRABSCRN() stack
  2554.  
  2555.           GRABSCRN[20]   <expA> = Screen images ( GRABSCRN() stack )
  2556.  
  2557.           GRABROW[20]    <expA> = Cursor row ( GRABSCRN() stack )
  2558.  
  2559.           GRABCOL[20]    <expA> = Cursor column ( GRABSCRN() stack)
  2560.  
  2561.           GRABCOLR[20]   <expA> = Screen attributes ( GRABSCRN() stack )
  2562.  
  2563.           _msg[20]       <expA> = DISPMSG message array
  2564.  
  2565.           _startrec      <expN> = Starting record for VEDIT, VSCRL, etc.
  2566.  
  2567.           _helpprg       <expC>  = Replacement  PROGNAME variable  for HELP
  2568.                          and MAKEHLP.   This variable is handy  if you want
  2569.                          to override such PROGNAMEs as ACHOICE(), etc.
  2570.  
  2571.           _helpvar       <expC> = Replacement VARNAME variable for HELP and
  2572.                          MAKEHLP.   This variable is  handy if you  want to
  2573.                          override such VARNAMEs as ACHOICE(), etc.
  2574.  
  2575.           _fakelock      <expL> = .T. - Simulate  network lock, .F. - don't
  2576.                          simulate
  2577.  
  2578.           _network       <expL>  =  .T.  -  Force VEDIT()  to  continue  to
  2579.                          redisplay current record while in view mode.
  2580.  
  2581.                                   .F. - Function normally
  2582.  
  2583.           gn_pulldown    <expN> = Used with VMENU (which pull-down are we
  2584.                          on?
  2585.  
  2586.           gn_option      <expN> = Used with VMENU (which option are we on?)
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.                                                                          43
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.                                     Reporting bugs
  2612.                                     --------------
  2613.  
  2614.           I very  much want  to insure  that VERNSIX.LIB  is free  from any
  2615.           errors.   I would  appreciate it  if you would  take the  time to
  2616.           document any errors  or anomalies you  find in this library.   If
  2617.           you find a "true" error,  I will attempt to fix it  and then send
  2618.           you a full-registered copy free of any charge.
  2619.  
  2620.           Please send comments, critisms and bug reports to:
  2621.  
  2622.  
  2623.                Vernon E. Six, Jr.
  2624.                c/o FrontLine Software
  2625.                2908 Forest Hollow Lane #2329
  2626.                Arlington, Texas  75080
  2627.                Ph: 214/437-7949  - Voice
  2628.                    817/695-0058  - BBS
  2629.  
  2630.                CompuServe: 72240,3122
  2631.                Bix:        vsix
  2632.                FidoNet:    1:124/4003.0
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.           44
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.                                 I want your functions
  2674.                                 ---------------------
  2675.  
  2676.           If you have developed a function that you would like  to see used
  2677.           in future versions of VERNSIX.LIB,  please send it to me on  disk
  2678.           (with  source code).   If  I use  your function  in the  a future
  2679.           release of VERNSIX.LIB, I will send you a full-registered copy of
  2680.           VERNSIX.LIB free of any charge.
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.                                                                          45
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.                                   REGISTRATION FORM
  2735.                                   -----------------
  2736.  
  2737.           If you purchased VERNSIX.LIB  directly from FrontLine Software in
  2738.           your  own name for $39.95,  then your copy  is already registered
  2739.           and you will  receive all the  benefits of registration.   You do
  2740.           not need to send in a registration form.
  2741.  
  2742.           If  you received  VERNSIX.LIB  from a  "Users' Group",  "Software
  2743.           Library",  "SIG", "Bulletin Board", etc.   and have  paid a small
  2744.           fee (usually either yearly dues or $3.00 to $10.00  per disk) you
  2745.           have NOT acquired a registration.   The fee you paid was  for the
  2746.           convenience  of obtaining  the diskette  with VERNSIX.LIB  on it.
  2747.           The fee does NOT apply to the registration fee.
  2748.  
  2749.           If you received  an evaluation copy of VERNSIX.LIB from FrontLine
  2750.           Software   for  a  fee  of   $5.00,  you  have   NOT  acquired  a
  2751.           registration.   The  $5.00 you  paid was  for the  convenience of
  2752.           obtaining  the diskette  with VERNSIX.LIB on  it.   However, this
  2753.           $5.00 fee DOES  apply toward  your registration fee  and you  may
  2754.           deduct it from the $39.95 fee when you register.
  2755.  
  2756.           You may register your copy by filling out the following form  and
  2757.           mailing it to the listed  address along with your check  or money
  2758.           order for $39.95 (Texas residents add 8% sales tax).
  2759.  
  2760.           When  you register your copy of VERNSIX.LIB, you will receive the
  2761.           latest version without the ten second "advertisemnet" in it.  You
  2762.           will  also  be granted  a royalty  free  run-time license  to use
  2763.           VERNSIX.LIB in any of your applications. 
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.           46
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.                          VERNSIX.LIB Registration Form v4.30
  2796.  
  2797.           Send $39.95 (Texas  residents add  8% sales tax)  check or  money
  2798.           order made payable to Vernon E. Six, Jr to:
  2799.  
  2800.                Vernon E. Six, Jr.
  2801.                c/o FrontLine Software
  2802.                2908 Forest Hollow Lane #2329
  2803.                Arlington, Texas  75080
  2804.                Ph: 214/437-7949  - Voice
  2805.                    817/695-0058  - BBS
  2806.  
  2807.                CompuServe: 72240,3122
  2808.                Bix:        vsix
  2809.                FidoNet:    1:124/4003.0
  2810.  
  2811.           Your  check will  be  supporting software  distributed under  the
  2812.           ShareWare concept  and you will  be contributing  to the  further
  2813.           development of VERNSIX.LIB and other ShareWare programs.
  2814.  
  2815.  
  2816.               Name  ______________________________________________________
  2817.  
  2818.               Company  ___________________________________________________
  2819.  
  2820.               Address  ___________________________________________________
  2821.  
  2822.               City/State  ________________________________________________
  2823.  
  2824.               Zip  ___________________
  2825.  
  2826.               Phone  ___________________________    Extension  ___________
  2827.  
  2828.  
  2829.  
  2830.               Total Amount Enclosed (please check one):
  2831.  
  2832.  
  2833.               Non-Texas Residents
  2834.             
  2835.               __ $39.95 
  2836.  
  2837.               __ $34.95 plus copy of receipt of $5.00 from evaluation copy
  2838.  
  2839.  
  2840.               Texas Residents (includes 8% sales tax)
  2841.  
  2842.               __ $43.15
  2843.  
  2844.               __ $38.15 plus copy of receipt of $5.00 from evaluation copy
  2845.  
  2846.  
  2847.               Diskette Format: (check one)  ___ 5.25" 360kb  ___ 3.5" 720kb
  2848.                                                                         47
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.                     VERNSIX.LIB Registration Form v4.30 Continued
  2857.                                     (User Survey)
  2858.  
  2859.  
  2860.           What electronic bulletin boards  (BBS) do you call? (in  order of
  2861.           preference)
  2862.  
  2863.              BBS Name        City, State       Phone Number  Max Baud Rate
  2864.  
  2865.           1. _______________ _________________ _____________ _____________
  2866.  
  2867.           2. _______________ _________________ _____________ _____________
  2868.  
  2869.           3. _______________ _________________ _____________ _____________
  2870.  
  2871.           4. _______________ _________________ _____________ _____________
  2872.  
  2873.           5. _______________ _________________ _____________ _____________
  2874.  
  2875.  
  2876.           How did you first learn about VERNSIX.LIB  or where did you first
  2877.           obtain your copy of VERNSIX.LIB?  Please be specific.
  2878.  
  2879.           _________________________________________________________________
  2880.                                                                            
  2881.           _________________________________________________________________
  2882.  
  2883.  
  2884.           What improvements would you like to see in VERNSIX.LIB?
  2885.                                                                            
  2886.           _________________________________________________________________
  2887.                                                                            
  2888.           _________________________________________________________________
  2889.               
  2890.  
  2891.           What other Clipper libraries  do you currently use?  (in order of
  2892.           preference)
  2893.  
  2894.           1. ______________________________________________________________
  2895.  
  2896.           2. ______________________________________________________________
  2897.  
  2898.           3. ______________________________________________________________
  2899.  
  2900.  
  2901.           One a scale of one  to ten how would you rate  VERNSIX.LIB in the
  2902.           following areas? (1 = poor, 5 = Good, 10 = Excellent)
  2903.  
  2904.           Performance  ____    Professionalism  ____   Ease of use ____
  2905.  
  2906.           Documentation  ____  Speed  ____   Simplicity  ____
  2907.  
  2908.  
  2909.           48
  2910.  
  2911.